package com.bytz.modules.cms.order.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bytz.modules.cms.order.entity.OrderItem;
import com.bytz.modules.cms.order.model.HistoricalPrice;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * 莱宝CMS—订单管理-订单商品表 Mapper 接口
 * </p>
 *
 * @author KyleWang
 * @since 2022-10-10
 */
public interface OrderItemMapper extends BaseMapper<OrderItem> {

    /**
     * 查找和经销商同等级的订单成交历史信息
     *
     * @param resellerId    经销商id
     * @param productNumber 产品编码
     * @param orderStatus   订单状态
     * @param orderType     订单种类（标准/项目）
     * @return 历史信息
     */
    Page<HistoricalPrice> getSameLevelHistoricalByReseller(@Param("resellerId") String resellerId,
                                                           @Param("productNumber") String productNumber,
                                                           @Param("orderStatus") String orderStatus,
                                                           @Param("orderType") String orderType,
                                                           Page<HistoricalPrice> page);

    /**
     * 查找和商品成交历史信息
     *
     * @param resellerId    经销商id
     * @param productNumber 产品编码
     * @param orderStatus   订单状态
     * @param orderType     订单种类（标准/项目）
     * @return 历史信息
     */
    Page<HistoricalPrice> getProductHistory(@Param("resellerId") String resellerId,
                                            @Param("productNumber") String productNumber,
                                            @Param("orderStatus") String orderStatus,
                                            @Param("orderType") String orderType,
                                            Page<HistoricalPrice> page);

    /**
     * 查找经销商的订单成交历史信息
     *
     * @param resellerId    经销商id
     * @param productNumber 产品编码
     * @param orderStatus   订单状态
     * @param orderType     订单种类（标准/项目）
     * @return 历史信息
     */
    Page<HistoricalPrice> getResellerHistorical(@Param("resellerId") String resellerId,
                                                @Param("productNumber") String productNumber,
                                                @Param("orderStatus") String orderStatus,
                                                @Param("orderType") String orderType,
                                                Page<HistoricalPrice> page);
}
